www.gusucode.com > VC++ 信息加密聊天源代码-源码程序 > VC++ 信息加密聊天源代码-源码程序\code\SecChat\__DWORD128.cpp
// __DWORD128.cpp: implementation of the __DWORD128 class. // download by http://www.NewXing.com ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "SecretChat.h" #include "__DWORD128.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// __DWORD128::__DWORD128() { srand((unsigned)::GetTickCount()); char *y;// = new char[16]; y = (char *)a; for(int i = 0;i < 16;i++) { y[i] = (char)(0x41+rand()%0xAF); } } __DWORD128::__DWORD(DWORD x, DWORD y, DWORD z, DWORD w) { a[0] = x; a[1] = y; a[2] = z; a[3] = w; } __DWORD128::__DWORD(DWORD *x) { a[0] = x[0]; a[1] = x[1]; a[2] = x[2]; a[3] = x[3]; } __DWORD128::~__DWORD128() { } void __DWORD128::DigitalID()//把自己变成数字标识,他是一个固定的数 { a[0] = 0x01234567; a[1] = 0x89abcdef; a[2] = 0xfedcba98; a[3] = 0x76543210; } long __DWORD128::IsDigitalID() { if(a[0] != 0x01234567) { return 0; } if(a[1] != 0x89abcdef) { return 0; } if(a[2] != 0xfedcba98) { return 0; } if(a[3] != 0x76543210) { return 0; } return 1; } void __DWORD128::RandCount() //把自己变成一个随机数 { srand((unsigned)::GetTickCount()); char *y;// = new char[16]; y = (char *)a; for(int i = 0;i < 16;i++) { y[i] = (char)(0x41+rand()%0xAF); } } void __DWORD128::Nil() //把自己变成零 { a[0] = 0X00000000; a[1] = 0X00000000; a[2] = 0X00000000; a[3] = 0X00000000; } void __DWORD128::Load(DWORD *x)//把DWORD数组赋值个__DWORD128类型 { a[0] = x[0]; a[1] = x[1]; a[2] = x[2]; a[3] = x[3]; } void __DWORD128::Store(DWORD *x)//把__DWORD128类型赋值个DWORD数组 { x[0] = a[0]; x[1] = a[1]; x[2] = a[2]; x[3] = a[3]; } void __DWORD128::operator =(__DWORD128 &x) { a[0] = x.a[0]; a[1] = x.a[1]; a[2] = x.a[2]; a[3] = x.a[3]; } void __DWORD128::operator %(__DWORD128 &x) { __DWORD128 z; z = x; x = *this; *this = z; } long __DWORD128::operator ==(__DWORD128 &x) { if(a[3] != x.a[3]) return FALSE; if(a[2] != x.a[2]) return FALSE; if(a[1] != x.a[1]) return FALSE; if(a[0] != x.a[0]) return FALSE; return TRUE; } long __DWORD128::operator <(__DWORD128 &x) { if(x.a[3] < a[3]) return FALSE; if(x.a[2] < a[2]) return FALSE; if(x.a[1] < a[1]) return FALSE; if(x.a[0] <= a[0]) return FALSE; return TRUE; } long __DWORD128::operator >(__DWORD128 &x) { if(x.a[3] > a[3]) return TRUE; if(x.a[2] > a[2]) return TRUE; if(x.a[1] > a[1]) return TRUE; if(x.a[0] > a[0]) return TRUE; return FALSE; } __DWORD128 addition; //为什么addition不能在operator ^里定义呢?因为在返回这个局部变量前会被注销 __DWORD128& __DWORD128::operator ^(__DWORD128 &x) { addition.a[0] = x.a[0] ^ a[0]; addition.a[1] = x.a[1] ^ a[1]; addition.a[2] = x.a[2] ^ a[2]; addition.a[3] = x.a[3] ^ a[3]; return addition; } __DWORD128 addition2; __DWORD128& __DWORD128::operator +(__DWORD128 &x) { addition2.a[0] = x.a[0] + a[0]; addition2.a[1] = x.a[1] + a[1]; addition2.a[2] = x.a[2] + a[2]; addition2.a[3] = x.a[3] + a[3]; return addition2; }